package com.hl.payServer.service;


import com.alipay.api.AlipayClient;
import com.hl.payServer.core.wePay.Wepay;
import com.hl.payServer.model.PageBean;
import com.hl.payServer.model.PayProperty;
import com.hl.payServer.model.PayTradeInfo;
import com.hl.payServer.model.ResultModel;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public interface PayTradeInfoService {

	PageBean<HashMap<String,Object>> queryList(HashMap<String,Object> param);

	List<PayTradeInfo> queryListSelfUse(HashMap<String,Object> param);

    AlipayClient aliPayBuild(PayProperty property);

	Wepay wePayBuild(PayProperty property);

	ResultModel save(PayTradeInfo entity);

	ResultModel update(PayTradeInfo entity);

	ResultModel pay(Map<String, Object> params, String data);

	/**
	 * 去第三方支付平台查询订单状态  支付宝/微信
	 * @param queryParam
	 * @param payTradeInfo    为null的时候是从接口进来查询的    其它情况是定时器查询
	 * @return
	 */
    PayTradeInfo queryThird(HashMap<String, Object> queryParam, PayTradeInfo payTradeInfo);

	boolean cancelOrderByOutTradeNo(PayTradeInfo payTradeInfo);

	/**
	 * 微信支付回调
	 * @param notifyXml
	 * @return
	 */
	String wePayNotifies(String notifyXml);

	/**
	 * 阿里支付回调
	 * @return
	 */
	String aliPayNotifies(TreeMap<String, String> requestParams);

	/**
	 * 修改通知状态及通知时间和次数
	 * @param p
	 * @return
	 */
	int updateNotifieStatus(PayTradeInfo p);

	PayTradeInfo findByTradeNo(String tradeNo);
}
